#include <bits/stdc++.h>
using namespace std;
#define si short int
#define ll long long int
#define ull unsigned long long int
#define mod 1000000007
#define endl "\n"
#define space " "
#define debug(argument) cout << "debug_point: " << argument << endl;
#define printvectorset(vs) \
for (auto &value : vs) \
{ \
cout << value << space; \
} \
cout << endl;
///////////////////////// Garvit_Goyal /////////////////////////////
int find_parent(int u, vector<int> &parent)
{
if (parent[u] == u)
{
return u;
}
return parent[u] = find_parent(parent[u], parent);
}
void make_union(int u, int v, vector<int> &parent, vector<int> &size)
{
u = find_parent(u, parent);
v = find_parent(v, parent);
if (u == v)
{
return;
}
if (size[u] < size[v])
{
swap(u, v);
}
parent[v] = u;
size[u] += size[v];
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
/* #ifndef ONLINE_JUDGE
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
#endif*/
int n, k;
cin >> n >> k;
vector<int> parent(n + 1);
vector<int> size(n + 1, 1);
vector<si> flagVector(n + 1, 0);
map<int, int> childCnt;
for (int i = 1; i <= n; i++)
{
parent[i] = i;
}
for (int i = 0; i < k; i++)
{
int u, v;
cin >> u >> v;
make_union(u, v, parent, size);
childCnt[u]++;
childCnt[v]++;
}
for (auto &value : childCnt)
{
if (value.second == 1)
{
flagVector[find_parent(value.first, parent)] += 1;
}
}
int satisfied = 0;
for (int i = 1; i <= n; i++)
{
if (parent[i] == i)
{
// cout << "adding " << size[i] - 1 << " at " << i << endl;
satisfied += (size[i] - 1);
}
}
// debug(satisfied);
if (satisfied < n)
{
cout << k - satisfied << endl;
}
else
{
cout << 0 << endl;
}
return 0;
}
1588. Sum of All Odd Length Subarrays | 1662. Check If Two String Arrays are Equivalent |
1832. Check if the Sentence Is Pangram | 1678. Goal Parser Interpretation |
1389. Create Target Array in the Given Order | 1313. Decompress Run-Length Encoded List |
1281. Subtract the Product and Sum of Digits of an Integer | 1342. Number of Steps to Reduce a Number to Zero |
1528. Shuffle String | 1365. How Many Numbers Are Smaller Than the Current Number |
771. Jewels and Stones | 1512. Number of Good Pairs |
672. Richest Customer Wealth | 1470. Shuffle the Array |
1431. Kids With the Greatest Number of Candies | 1480. Running Sum of 1d Array |
682. Baseball Game | 496. Next Greater Element I |
232. Implement Queue using Stacks | 844. Backspace String Compare |
20. Valid Parentheses | 746. Min Cost Climbing Stairs |
392. Is Subsequence | 70. Climbing Stairs |
53. Maximum Subarray | 1527A. And Then There Were K |
1689. Partitioning Into Minimum Number Of Deci-Binary Numbers | 318. Maximum Product of Word Lengths |
448. Find All Numbers Disappeared in an Array | 1155. Number of Dice Rolls With Target Sum |